package com.zlm.user.partner.dao;

import com.zlm.common.base.BaseDao;
import com.zlm.common.entity.UserGroupRelationDO;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;

/**
 * @Author: duyufu
 * @Date: 2019/7/18 13:32
 */
@Repository
public interface UserGroupRelationDao extends BaseDao<UserGroupRelationDO> {

    /**
     * 批量添加环信群组成员
     * @param groupHxId
     * @param userHxIds
     */
    void addHxGroupMember(@RequestParam("groupHxId") String groupHxId,
                          @RequestParam("userHxIds") List<String> userHxIds);

    /**
     * 批量删除环信群组成员
     * @param groupHxId
     * @param userHxIds
     */
    void deleteHxGroupMember(@RequestParam("groupHxId") String groupHxId,
                             @RequestParam("userHxIds") List<String> userHxIds);

    /**
     * 删除群组关系
     * @param groupHxId
     */
    void deleteUserGroupRelation(@RequestParam("groupHxId") String groupHxId);

    /**
     * 删除单个群组成员
     * @param groupHxId
     * @param userHxId
     */
    void deleteSingleHxGroupMember(@RequestParam("groupHxId") String groupHxId,
                                   @RequestParam("userHxId") String userHxId);

    /**
     * 统计群组成员数量
     * @param groupHxId
     * @return
     */
    int countMemberByHxId(@RequestParam("groupHxId") String groupHxId);

    /**
     * 获取群组成员
     * @param groupHxId
     * @param pagenum
     * @param pagesize
     * @return
     */
    List<UserGroupRelationDO> getHxGroupMember(@RequestParam("groupHxId") String groupHxId,
                                               @RequestParam("pagenum") Integer pagenum,
                                               @RequestParam("pagesize") Integer pagesize);

    /**
     * 根据用户环信id查看群组成员
     * @param groupHxId
     * @param userHxId
     * @param userType
     * @return
     */
    UserGroupRelationDO queryMemberByHxId(@RequestParam("groupHxId") String groupHxId,
                                          @RequestParam("userHxId") String userHxId,
                                          @RequestParam("userType") Integer userType);

    /**
     * 编辑群组管理员
     * @param relation
     */
    void editHxGroupAdmin(UserGroupRelationDO relation);

    /**
     * 获取管理员列表
     * @param groupHxId
     * @return
     */
    List<Map<String, Object>> getHxGroupAdmin(@RequestParam("groupHxId")String groupHxId);

    /**
     *
     * @param groupHxId
     * @return
     */
    List<String> queryMemberIdByHxId(@RequestParam("groupHxId") String groupHxId);
}
